package ar.com.test.logic.componentes;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import ar.com.logic.components.HistoricoRespuestas;
import ar.com.logic.components.Numero;
import ar.com.logic.components.interfaces.IHistoricoRespuestas;
import ar.com.logic.evaluador.Respuesta;
import ar.com.test.logic.componentes.dummy.RespuestaDummy;

public class HistoricoUT {

	private IHistoricoRespuestas historico;

	@Before
	public void setUp() {

		historico = new HistoricoRespuestas(4, true);
		historico.add(new RespuestaDummy(1, 2, new Numero("1234")));
		historico.add(new RespuestaDummy(2, 1, new Numero("5678")));
		historico.add(new RespuestaDummy(2, 0, new Numero("5701")));
		historico.add(new RespuestaDummy(0, 2, new Numero("1367")));
		historico.add(new RespuestaDummy(0, 3, new Numero("4831")));
		historico.add(new RespuestaDummy(1, 1, new Numero("2183")));

	}

	@Test
	public void testAgregarRespuesta() {
		Respuesta r = new RespuestaDummy(2, 1, new Numero("1239"));
		historico.add(r);
		Assert.assertEquals(new Integer(7), historico.getUltimoTurno());
		Assert.assertEquals(true, historico.contains(r));
		Assert.assertEquals(0, historico.getNumerosNoUtilizados().size());
	}

	@Test
	public void obtenerRespuestasConBien() {
		Assert.assertEquals(4, historico.obtenerRespuestasConBien().size());
	}

	@Test
	public void obtenerRespuestasConBienExcluyente() {
		Assert.assertEquals(1, historico.obtenerRespuestasConBienExcluyente()
				.size());
	}

	@Test
	public void obtenerRespuestasConRegular() {
		Assert.assertEquals(5, historico.obtenerRespuestasConRegular().size());
	}

	@Test
	public void obtenerRespuestasConRegularExcluyente() {
		Assert.assertEquals(2, historico
				.obtenerRespuestasConRegularExcluyente().size());
	}

	@Test
	public void obtenerRespuestasConNBien() {
		Assert.assertEquals(2, historico.obtenerRespuestasConNBien(1).size());
	}

	@Test
	public void obtenerRespuestasConNRegular() {
		Assert.assertEquals(1, historico.obtenerRespuestasConNRegular(3).size());
	}

	@Test
	public void getUltimoTurno() {
		Assert.assertEquals(new Integer(6), historico.getUltimoTurno());
	}

	@Test
	public void obtenerTotalEncontradosEnNUltimasRespuestas() {
		Assert.assertEquals(new Integer(5),
				historico.obtenerTotalEncontradosEnNUltimasRespuestas(2));
	}

	@Test
	public void obtenerCorrectosEncontradosEnNUltimasRespuestas() {
		Assert.assertEquals(new Integer(1),
				historico.obtenerTotalCorrectosEnNUltimasRespuestas(2));
	}
	
	@Test
	public void obtenerRegularesEncontradosEnNUltimasRespuestas() {
		Assert.assertEquals(new Integer(4),
				historico.obtenerTotalRegularesEnNUltimasRespuestas(2));
	}
	
	@Test
	public void getNumerosSinUtilizar(){
		Assert.assertEquals(1, historico.getNumerosNoUtilizados().size());
		Assert.assertEquals(new Integer(9), historico.getNumerosNoUtilizados().get(0));
	}
}
